Many enterprise software applications are designed as web-based applications (“web applications”) so that they can be accessed from anywhere and/or using almost any processing device that can run a web browser. A web application comprises client-side components and server-side components that communicate with each other using protocols including the HTTP protocol. Client-side components of a web application are typically responsible for handling the user interface by presenting (e.g., displaying) information to the user through a user interface on the user's access device, receiving user input, etc. Server-side components are responsible for tasks including either itself generating or obtaining information from data sources to be presented to the user in accordance with received inputs.
Enterprise web applications typically run many different types of background jobs that are subject to various resource and time constraints. For example, an investor relations application (“IR application”) designed primarily to provide services for an enterprise's investment advisors may be required to support concurrent jobs for handling user interface inputs from multiple users, receiving current investment information from external sources, downloading investment research reports, receiving estimate information regarding financial products, processing investment alerts, email, logging, etc. The typical mix of jobs vary in applications and/or in time, in many ways including the duration of jobs, the number of jobs of a particular type, the frequency of occurrence of jobs, etc. A number of scheduling frameworks exist for scheduling jobs for execution. However, with evolving applications having different types of jobs and end user needs, improved scheduling frameworks for handling various job mixes are still desired.